"""
面向对象编程
"""


class Animal:
    pass


class Runnable():
    pass

# 多继承


class Dog(Animal, Runnable):
    pass

# 类中的特殊函数


class Student:
    # 构造函数
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 限制属性：只允许对Student实例添加name和age属性。
    __slots__ = ('name', 'age')

    # 对象的字符串表示，当调用“print(Student('Michael'))”时，返回的字符串。
    def __str__(self):
        return 'Student object (name=%s)' % self.name

    # 对象的表示，当调用“Student('Michael')”时，返回的字符串。
    def __repr__(self):
        return 'Student object (name=%s)' % self.name

    # 使得一个类的实例可以像函数一样被调用,当一个实例被调用时，Python会自动查找并执行__call__方法。
    def __call__(self, name):
        print('My name is %s.' % self.name)

    # 析构函数，用于执行对象在被销毁前需要完成的清理工作，比如关闭文件、释放外部资源、断开网络连接等
    def __del__(self):
        print('%s is deleted' % self.name)
